DataSync를 이용해서 EFS에서 S3로 데이터 전송
안녕하세요 클래스메소드 김재욱(Kim Jaewook) 입니다. 이번에는 DataSync를 이용해서 EFS에서 S3로 데이터를 전송하는 방법에 대해 정리해 봤습니다.
사전 준비
먼저 EC2 인스턴스, EFS를 생성하고, EC2 인스턴스에 EFS를 마운트합니다.
해당 과정은 아래 블로그를 참고해 주세요.
※ test-efs 디렉토리에 마운트를 진행했으며, test-file.txt 파일을 생성했습니다.
이어서 DataSync에서 사용할 보안 그룹을 생성합니다.
DataSync에서 사용할 보안 그룹의 경우 별 다른 설정은 필요없습니다.
※ 아웃바운드의 경우 0.0.0.0으로 오픈 한 상태입니다.
이어서 EFS의 보안 그룹입니다.
EFS의 보안 그룹에는 NFS 2049 포트로 DataSync의 보안 그룹의 액세스를 허용합니다.
마지막으로 EFS의 파일을 담을 S3 버킷을 생성했습니다.
DataSync 설정
먼저 EFS와 S3 버킷의 위치를 생성합니다.
- 위치 유형에는 EFS를 선택합니다
- 파일 시스템에는 생성한 EFS를 선택합니다.
- 탑재 경로는 상황에 맞게 경로를 입력합니다.
- 상기 블로그를 통해 EFS를 마운트했다면, 루트 경로가 test-efs가 되므로 / 를 설정합니다.
- 그 외 test-efs/test-folder/test.txt 처럼 test-folder 디렉토리를 생성해, 해당 경로를 지정하고 싶다면 /test-folder 이라 지정합니다..
- 상기 블로그를 통해 EFS를 마운트했다면, 루트 경로가 test-efs가 되므로 / 를 설정합니다.
- 이어서 서브넷을 지정합니다. 서브넷의 경우 아래를 충족해야 합니다.
- Amazon EFS 파일 시스템과 동일한 VPC에 있습니다.
- 하나 이상의 파일 시스템 탑재 대상과 동일한 가용 영역에 있습니다.
- 마지막으로 DataSync의 보안 그룹을 선택합니다.
다음은 S3 버킷의 위치를 생성합니다.
- 위치 유형에는 S3 버킷을 선택합니다.
- S3 버킷에는 EFS 파일의 데이터를 전송 받을 S3 버킷을 선택합니다.
- S3 storage class when used as a destination에서는 객체를 전송할 스토리지 클래스를 선택합니다.
- 폴더에는 데이터를 전송 받을 경로를 입력합니다.
- 마지막으로 S3에 액세스하기 위해서는 권한이 필요하므로, IAM Role을 선택합니다.
- 필요에 따라 자동으로 IAM Role을 생성할 수도 있습니다.
이어서 작업을 실행할 Task를 생성합니다.
- 기존 위치 선택을 선택합니다.
- 리전에는 EFS가 생성된 리전을 선택합니다.
- 기존 위치에는 생성한 EFS를 선택합니다.
이어서 대상 위치 구성을 설정합니다.
- 기존 위치 선택을 선택합니다.
- S3 버킷이 생성된 리전과 조금 전 생성한 S3 버킷의 위치를 선택합니다.
마지막으로 설정 구성에서 태스크 이름과 실행 구성, 전송 모드, 로그와 같은 설정을 상황에 맞게 설정합니다.
마지막으로 생성한 태스크에서「기본값으로 시작」을 통해 태스크를 실행합니다.
태스크 콘솔화면에서 해당 태스크의 상태를 확인할 수 있습니다.
기록에서도 태스크의 실행 상태를 확인할 수 있습니다.
오류가 발생했다면 발생 원인을 기록에서 확인할 수 있습니다.
파일 전송이 성공했다면 기록에서 상태가 성공으로 바뀌는 것을 확인할 수 있습니다.
마지막으로 S3 버킷으로 들어가 보면, 성공적으로 데이터가 전송된 것을 확인할 수 있습니다.
본 블로그 게시글을 읽고 궁금한 사항이 있으신 분들은 jaewookkim533@yahoo.com로 보내주시면 감사하겠습니다.